home *** CD-ROM | disk | FTP | other *** search
/ The Best of MacTutor - S…e Code for Volumes 1 to 5 / The Best of MacTutor - Source Code for Volume 1-5 (Wayzata Technology)(6031)(1990).bin / Source Code / #10 (Jul 86) / modula source / PBFileManager.MOD < prev    next >
Text File  |  1986-04-10  |  10KB  |  364 lines

  1. (* Tom Taylor
  2.    3707 Poinciana Dr. #137
  3.    Santa Clara, CA 95051 *)
  4.  
  5. IMPLEMENTATION MODULE PBFileManager;
  6.  
  7. (* This module implements the low level
  8.    file system described in the latest
  9.    File Manager documentation.  The
  10.    procedures implemented in this
  11.    module support both MFS and HFS
  12.    calls.  However, attempting to
  13.    call an HFS-only routine on a
  14.    system without HFS will bomb. *)
  15.  
  16.   FROM ASMInterface IMPORT
  17.     ASM_MCode, InstallAssembly;
  18.   FROM Terminal IMPORT
  19.     WriteString;
  20.   FROM MacSystemTypes IMPORT
  21.     OsErr;
  22.   FROM SYSTEM IMPORT
  23.     ADDRESS;
  24.     
  25.   VAR
  26.     modnum : INTEGER; (* Module number of
  27.                          assembly routine *)
  28.  
  29.     PROCEDURE PBMountVol
  30.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  31.     BEGIN
  32.       RETURN LowLevelPB (pBlk, async, 0A00Fh, 0);
  33.     END PBMountVol;
  34.     
  35.     PROCEDURE PBGetVInfo
  36.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  37.     BEGIN
  38.       RETURN LowLevelPB (pBlk, async, 0A007h, 0);
  39.     END PBGetVInfo;
  40.     
  41.     PROCEDURE PBHGetVInfo
  42.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  43.     BEGIN
  44.       RETURN LowLevelPB (pBlk, async, 0A207h, 0);
  45.     END PBHGetVInfo;
  46.     
  47.     PROCEDURE PBHSetVInfo
  48.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  49.     BEGIN
  50.       RETURN LowLevelPB (pBlk, async, 0A260h, 11);
  51.     END PBHSetVInfo;
  52.     
  53.     PROCEDURE PBGetVol
  54.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  55.     BEGIN
  56.       RETURN LowLevelPB (pBlk, async, 0A014h, 0);
  57.     END PBGetVol;
  58.     
  59.     PROCEDURE PBHGetVol
  60.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  61.     BEGIN
  62.       RETURN LowLevelPB (pBlk, async, 0A214h, 0);
  63.     END PBHGetVol;
  64.     
  65.     PROCEDURE PBSetVol
  66.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  67.     BEGIN
  68.       RETURN LowLevelPB (pBlk, async, 0A015h, 0);
  69.     END PBSetVol;
  70.     
  71.     PROCEDURE PBHSetVol
  72.         (pBlk: WDPBPtr; async: BOOLEAN) : OsErr;
  73.     BEGIN
  74.       RETURN LowLevelPB (pBlk, async, 0A215h, 0);
  75.     END PBHSetVol;
  76.     
  77.     PROCEDURE PBFlushVol
  78.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  79.     BEGIN
  80.       RETURN LowLevelPB (pBlk, async, 0A013h, 0);
  81.     END PBFlushVol;
  82.     
  83.     PROCEDURE PBUnmountVol
  84.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  85.     BEGIN
  86.       RETURN LowLevelPB (pBlk, async, 0A00Eh, 0);
  87.     END PBUnmountVol;
  88.     
  89.     PROCEDURE PBOffLine
  90.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  91.     BEGIN
  92.       RETURN LowLevelPB (pBlk, async, 0A035h, 0);
  93.     END PBOffLine;
  94.     
  95.     PROCEDURE PBEject
  96.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  97.     BEGIN
  98.       RETURN LowLevelPB (pBlk, async, 0A017h, 0);
  99.     END PBEject;
  100.     
  101.     PROCEDURE PBOpen
  102.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  103.     BEGIN
  104.       RETURN LowLevelPB (pBlk, async, 0A000h, 0);
  105.     END PBOpen;
  106.     
  107.     PROCEDURE PBHOpen
  108.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  109.     BEGIN
  110.       RETURN LowLevelPB (pBlk, async, 0A20Fh, 0);
  111.     END PBHOpen;
  112.     
  113.     PROCEDURE PBOpenRF
  114.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  115.     BEGIN
  116.       RETURN LowLevelPB (pBlk, async, 0A00Ah, 0);
  117.     END PBOpenRF;
  118.     
  119.     PROCEDURE PBHOpenRF
  120.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  121.     BEGIN
  122.       RETURN LowLevelPB (pBlk, async, 0A20Ah, 0);
  123.     END PBHOpenRF;
  124.     
  125.     PROCEDURE PBLockRange
  126.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  127.      BEGIN
  128.       RETURN LowLevelPB (pBlk, async, 0A260h, 16);
  129.     END PBLockRange;
  130.     
  131.    PROCEDURE PBUnlockRange
  132.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  133.     BEGIN
  134.       RETURN LowLevelPB (pBlk, async, 0A260h, 17);
  135.     END PBUnlockRange;
  136.     
  137.     PROCEDURE PBRead
  138.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  139.     BEGIN
  140.       RETURN LowLevelPB (pBlk, async, 0A002h, 0);
  141.     END PBRead;
  142.     
  143.     PROCEDURE PBWrite
  144.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  145.     BEGIN
  146.       RETURN LowLevelPB (pBlk, async, 0A003h, 0);
  147.     END PBWrite;
  148.     
  149.     PROCEDURE PBGetFPos
  150.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  151.     BEGIN
  152.       RETURN LowLevelPB (pBlk, async, 0A018h, 0);
  153.     END PBGetFPos;
  154.     
  155.     PROCEDURE PBSetFPos
  156.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  157.     BEGIN
  158.       RETURN LowLevelPB (pBlk, async, 0A044h, 0);
  159.     END PBSetFPos;
  160.     
  161.     PROCEDURE PBGetEOF
  162.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  163.     BEGIN
  164.       RETURN LowLevelPB (pBlk, async, 0A011h, 0);
  165.     END PBGetEOF;
  166.     
  167.     PROCEDURE PBSetEOF
  168.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  169.     BEGIN
  170.       RETURN LowLevelPB (pBlk, async, 0A012h, 0);
  171.     END PBSetEOF;
  172.     
  173.     PROCEDURE PBAllocate
  174.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  175.     BEGIN
  176.       RETURN LowLevelPB (pBlk, async, 0A010h, 0);
  177.     END PBAllocate;
  178.     
  179.     PROCEDURE PBAllocContig
  180.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  181.     BEGIN
  182.       RETURN LowLevelPB (pBlk, async, 0A210h, 0);
  183.     END PBAllocContig;
  184.     
  185.     PROCEDURE PBFlushFile
  186.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  187.     BEGIN
  188.       RETURN LowLevelPB (pBlk, async, 0A045h, 0);
  189.     END PBFlushFile;
  190.     
  191.     PROCEDURE PBClose
  192.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  193.      BEGIN
  194.       RETURN LowLevelPB (pBlk, async, 0A001h, 0);
  195.     END PBClose;
  196.     
  197.    PROCEDURE PBCreate
  198.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  199.     BEGIN
  200.       RETURN LowLevelPB (pBlk, async, 0A008h, 0);
  201.     END PBCreate;
  202.     
  203.     PROCEDURE PBHCreate
  204.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  205.     BEGIN
  206.       RETURN LowLevelPB (pBlk, async, 0A208h, 0);
  207.     END PBHCreate;
  208.     
  209.     PROCEDURE PBDirCreate
  210.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  211.     BEGIN
  212.       RETURN LowLevelPB (pBlk, async, 0A260h, 6);
  213.     END PBDirCreate;
  214.     
  215.     PROCEDURE PBDelete
  216.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  217.     BEGIN
  218.       RETURN LowLevelPB (pBlk, async, 0A009h, 0);
  219.     END PBDelete;
  220.     
  221.     PROCEDURE PBHDelete
  222.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  223.     BEGIN
  224.       RETURN LowLevelPB (pBlk, async, 0A209h, 0);
  225.     END PBHDelete;
  226.     
  227.     PROCEDURE PBGetFInfo
  228.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  229.     BEGIN
  230.       RETURN LowLevelPB (pBlk, async, 0A00Ch, 0);
  231.     END PBGetFInfo;
  232.     
  233.     PROCEDURE PBHGetFInfo
  234.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  235.     BEGIN
  236.       RETURN LowLevelPB (pBlk, async, 0A20Ch, 0);
  237.     END PBHGetFInfo;
  238.     
  239.     PROCEDURE PBSetFInfo
  240.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  241.     BEGIN
  242.       RETURN LowLevelPB (pBlk, async, 0A00Dh, 0);
  243.     END PBSetFInfo;
  244.     
  245.     PROCEDURE PBHSetFInfo
  246.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  247.     BEGIN
  248.       RETURN LowLevelPB (pBlk, async, 0A20Dh, 0);
  249.     END PBHSetFInfo;
  250.     
  251.     PROCEDURE PBSetFLock
  252.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  253.     BEGIN
  254.       RETURN LowLevelPB (pBlk, async, 0A041h, 0);
  255.     END PBSetFLock;
  256.     
  257.     PROCEDURE PBHSetFLock
  258.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  259.     BEGIN
  260.       RETURN LowLevelPB (pBlk, async, 0A241h, 0);
  261.     END PBHSetFLock;
  262.     
  263.     PROCEDURE PBRstFLock
  264.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  265.     BEGIN
  266.       RETURN LowLevelPB (pBlk, async, 0A042h, 0);
  267.     END PBRstFLock;
  268.     
  269.     PROCEDURE PBHRstFLock
  270.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  271.     BEGIN
  272.       RETURN LowLevelPB (pBlk, async, 0A242h, 0);
  273.     END PBHRstFLock;
  274.     
  275.     PROCEDURE PBSetFVers
  276.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  277.     BEGIN
  278.       RETURN LowLevelPB (pBlk, async, 0A043h, 0);
  279.     END PBSetFVers;
  280.     
  281.     PROCEDURE PBRename
  282.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  283.     BEGIN
  284.       RETURN LowLevelPB (pBlk, async, 0A00Bh, 0);
  285.     END PBRename;
  286.     
  287.     PROCEDURE PBHRename
  288.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  289.     BEGIN
  290.       RETURN LowLevelPB (pBlk, async, 0A20Bh, 0);
  291.     END PBHRename;
  292.     
  293.     PROCEDURE PBGetCatInfo
  294.         (pBlk: CInfoPBPtr; async: BOOLEAN) : OsErr;
  295.     BEGIN
  296.       RETURN LowLevelPB (pBlk, async, 0A260h, 9);
  297.     END PBGetCatInfo;
  298.     
  299.     PROCEDURE PBSetCatInfo
  300.         (pBlk: CInfoPBPtr; async: BOOLEAN) : OsErr;
  301.     BEGIN
  302.       RETURN LowLevelPB (pBlk, async, 0A260h, 10);
  303.     END PBSetCatInfo;
  304.     
  305.     PROCEDURE PBCatMove
  306.         (pBlk: CInfoPBPtr; async: BOOLEAN) : OsErr;
  307.     BEGIN
  308.       RETURN LowLevelPB (pBlk, async, 0A260h, 5);
  309.     END PBCatMove;
  310.     
  311.     PROCEDURE PBOpenWD
  312.         (pBlk: WDPBPtr; async: BOOLEAN) : OsErr;
  313.     BEGIN
  314.       RETURN LowLevelPB (pBlk, async, 0A260h, 1);
  315.     END PBOpenWD;
  316.     
  317.     PROCEDURE PBCloseWD
  318.         (pBlk: WDPBPtr; async: BOOLEAN) : OsErr;
  319.     BEGIN
  320.       RETURN LowLevelPB (pBlk, async, 0A260h, 2);
  321.     END PBCloseWD;
  322.     
  323.     PROCEDURE PBGetWDInfo
  324.         (pBlk: WDPBPtr; async: BOOLEAN) : OsErr;
  325.     BEGIN
  326.       RETURN LowLevelPB (pBlk, async, 0A260h, 7);
  327.     END PBGetWDInfo;
  328.     
  329.     PROCEDURE PBGetFCBInfo
  330.         (pBlk: FCBPBPtr; async: BOOLEAN) : OsErr;
  331.     BEGIN
  332.       RETURN LowLevelPB (pBlk, async, 0A260h, 8);
  333.     END PBGetFCBInfo;
  334.     
  335.  
  336.     PROCEDURE LowLevelPB (pBlk: ADDRESS;
  337.                       async: BOOLEAN;
  338.               trap: CARDINAL;
  339.               selector: INTEGER) : OsErr;
  340.     (* This procedure is responsible for calling
  341.        the assembly language routine that actually
  342.        calls the PB trap. *)
  343.       PROCEDURE LowLevelPB (pBlk: ADDRESS;
  344.             async: BOOLEAN;
  345.                 trap: CARDINAL;
  346.             selector: INTEGER;
  347.             modnum: INTEGER) : OsErr;
  348.       CODE ASM_MCode; 0; END LowLevelPB;
  349.     BEGIN
  350.       RETURN LowLevelPB (pBlk, async, trap, selector, modnum);
  351.     END LowLevelPB;
  352.  
  353. BEGIN
  354.   (* Look for a MASM resource with ID
  355.      of 1986 in current open resource
  356.      files.  It better be in our
  357.      .LOD file, put there by M2 Linker *)
  358.   modnum := InstallAssembly("",1986);
  359.   IF modnum < 1 THEN
  360.     WriteString("Cannot load PB asm code");
  361.     HALT
  362.   END;
  363. END PBFileManager.
  364.